Log level の決め方
システムの動作を元にログ出力のレベルを決めようとしてもなかなか決められない。 例:
対向システムがエラーを出しているけど、想定通りではある
エラーなのでERRORレベルでログを出すべき
しかしERRORやWARNINGだと Sentry に通知がいってしうから、エラーだけどINFOにするべき? そこで、各レベルに応じて、自分が次のように行動しなければいけない、という前提で考える。
CRITICAL:
深夜に電話でたたき起こされる
後回しにするほど後でリカバリが面倒になる
ビジネス上の損失が莫大になる
業務が止まる
ERROR
出かけ先に電話がかかってきてすぐトラブルシューティングと修正が必要
プログラム上、発生したら困る状況(データやパラメータ)になったかもしれない
あるはずのファイルがない
CRITICALに発展する可能性がある
業務が止まる可能性がある
WARNING
翌営業日には対策着手
ありえない組み合わせのリクエストがきた
クライアントのバグ?
攻撃されている?
1回だけなら、状況を記録して様子見
頻発するようなら早めの対策が必要
INFO
通常見ない
WARNING以上のログ発生時に追加情報として確認する
DEBUG
通常記録されない
WARNING以上のログ発生時に、サービスのログ記録レベルをDEBUGに変えてトラブルシューティングに使う